package de.uni_potsdam.hpi.bpt.ai.collection;

import java.util.Collection;
import java.util.Date;
import java.util.Set;

/**
 * Represents a model containing revisions.
 * @author Philipp Berger
 *
 */
public interface Model {

	/**
	 * All {@link Revision revisions} of this {@link Model model}
	 * @return all {@link Revision revisions}
	 */
	public abstract Collection<Revision> getRevisions();

	/**
	 * Get the number of all {@link #getRevisions() revisions}
	 * @return {@link Set#size() size} of {@link #getRevisions() revisions}
	 */
	public abstract Integer getNumberOfRevision();

	/**
	 * Get the model id, decoded from the file name
	 * @return the model {@link Long id}
	 */
	public abstract String getId();

	/**
	 * Get the model name, decoded from the file name
	 * @return the model name
	 */
	public abstract String getName();

	/**
	 * Get the creation {@link Date date} of the model
	 * @return the creation date
	 */
	public abstract Date getDate();

}